#include "app.h"
#include <emscripten.h>
#include <emscripten/html5.h>
#include <webgl/webgl2.h>
#include <assert.h> // For assert()
#include <stdio.h>
#include <math.h>

#include "wasmbox_api.h"
#include <string>
#include "stringtool/stringconv.h"

void _callback(int len,char16_t* text, void* userdata)
{
    std::string stru8 = StringConv::ToUtf8String(text);
    emscripten_console_logf("_callback totallen=%d.%s",len,stru8.c_str());
}
void App::Init()
{

  char* test_bigheap= new char[32*1024*1024];
  emscripten_console_logf("Helloworld.");
  printf("hello world this.\n");



  double dpr = emscripten_get_device_pixel_ratio();

  // emscripten_set_element_css_size("canvas", width / dpr, height / dpr);
  emscripten_set_canvas_element_size("canvas", 1024, 768);

  EmscriptenWebGLContextAttributes attrs;
  emscripten_webgl_init_context_attributes(&attrs);
  attrs.majorVersion = 2;

  EMSCRIPTEN_WEBGL_CONTEXT_HANDLE webgl = emscripten_webgl_create_context("canvas", &attrs);
  // assert(webgl);
  emscripten_webgl_make_context_current(webgl);

 
  wasmbox_load_text_utf16_async("./testdata.json",_callback,NULL);
}

void App::Update(float timer)
{
 //此处得到是毫秒时间戳，然而并没有那么高精度，直接除1000到秒使用
  float p = fmodf(timer, 1.0f);
  //emscripten_console_logf("timer=%f\n", p);
  // //fixsize
  double dpr = emscripten_get_device_pixel_ratio();
  double width;
  double height;
  emscripten_get_element_css_size("canvas", &width, &height);
  //printf("dpr=%f %f %f\n", dpr, width, p);
  emscripten_set_canvas_element_size("canvas", (int)(width * dpr), (int)(height * dpr));

  glClearColor(p, p + 0.3f, p + 0.6f, 1.f);
  glClear(GL_COLOR_BUFFER_BIT);

}
